iT邦幫忙

DAY 15
2

emacs的30天學習筆記系列 第 18

emacs 做中學第十八天:gsoap2,滿肚子的疑問,滿到脖子上了

  • 分享至 

  • xImage
  •  

通常形容吃很飽,會說滿到脖子上了。對gsoap2的疑問也是如此。
因為太多疑問,所以把它寫下來。待有空時,再慢慢求証,其實IT人就是好奇心重,不懂的事情太多,想要懂,又分好幾種層次,想要從驗証中,來理解。
Q1: web service 可以像cgi方式的運行 , 可以像nusoap,用php語言實作嗎?
**Q2:gsoap2 只能產生給C/C++**的輔助類別,所以其他語言,client端,怎麼辦呢,這時候,微軟平台上,
保証方便,封裝好了一堆類別(函式)給你用,雖然遊戲規則有點難懂,但是多練習幾次,
把呼叫的順序弄清楚,呼叫的方式,參數傳對。
**Q3:**沒實作在http server上,本機,只有遠端(),是真的,還是假的web service。
**Q4:**SERVER端是用C語言,client端也是C語言,怎麼透過http,一切就變了樣,
透露一些細節吧,例如型別,例如回傳值,例如參數值。
Q5: SOAP 即然也透過http,那些是相同的呢?例如訊息格式?
SOAP messaging,除了是
歷史上為了完成這件任務,有多少類似的實作,ssh,遠端登入主機,下指令嗎?
**Q6:**WSDL可以讓其他語言做為規格,來實作,以gsoap來說,它做了那些變換?所以其他語言,可能也是照這種方式來變換!!
**Q7:**如果你的服務,不提供WSDL,或是提供的不詳盡,那就達不到分享的目的了。
**Q8:**給個比較實用點的例子吧,前3個例子,不能傳參數,只能默默接受回傳值,太悶了吧!!而四則運算加上
次方,大家都有計算機的時代,工程用計算機也才450元。
例如:rss
用命令列看rss,真得和別人不一樣,別人還用專屬的rss reader呢?
**Q8-1:**如果不是soap 的四則運算,做有網路的功能四則運算,你會怎麼做??
意思是,一般的tcp,socket寫法的,
經過這樣的比較,我們會比較好體會gsoap2 幫了我們那些忙?
或者說,我們可以比較好理解gsoap2 輔助函式( helper)的設計理念。

因為現在常用的c函式都不能用了。

**Q9:**可以把之前的案例,繼續完成了吧。

Q10: 如果我要web服務傳回一個select 的結果,怎麼處理?
何謂databinding,
一個table,比做一個物件,一個class,一個struct,莫非是所謂的ORM, OBJ-REL-MAP,物件關聯圖。
這個例子顯然粉複雜。

**Q11:**我可請web service傳回圖片,任何格式的檔案呢?

**Q12:**雖有web,但client端不用browser,若是要用browser 來call web service,要怎麼做?

**Q13:**可以動態產生一個文字檔(xml檔),傳回給user嗎?

**Q14:**XML SPY 可以call 你用gsoap 產生的web service嗎? winxp, win7 都可嗎? 有沒有要修正的地方

**Q14:**用你用gsoap 產生的client, 叫用 其他語言產生的web service?真的跨平台嗎?
姑且相信xmethods的註解是可以相信的。

92共識,共識沒有白紙黑字寫下來,而WSDL是白紙黑字寫下來的,請問RFC第幾號??

是草案(draft)還是正式提案。

**Q15:**即使跨平台跨語言,為什麼大家還是用微軟的solution??

**Q16:**可以不要提一些類政治的議題,再多提一些web service的其他面向,例如,我要輸入帳號密碼,才可以使用web
service,例如…,例如…

**Q17:**承上,web service的安全相關的議題呢?

Q18: 我的web service把它想成是function的話,可以call其他web service嗎?哇,真得跨語言耶!!
call wsa(delphi), call wsb(java script) call wsc(C#), 本體是用gcc,真得可以嗎?
**Q19:**不會寫cgi,可以換種寫法嗎? soap 是RFC 幾號??
單獨存在的standalone 的,不用相依depend,依賴host寄宿於
cgi 換個執行的方式,換個丟回值的方式
**./**也是個執行的方式
grep下指令 也是執行的方式
mode_perl,透過apache的模組,造就webmin(這個幾乎無所不能的管理工具)的流行。

**Q20:**不會寫gcc,其他語言可以用gsoap2嗎?
在自問自答的過程中,似乎也回答了,web service
相對抽象的理論。連切入的點都不清楚。
Q21:用gdb來除錯,這個,
或是有沒有比較省力的方式,來釐清一下範圍。
秘技,
-g,autotesting。

這麼大的spec,
eco system的另一個例子,跟著RFC, W3C走。
恐怖的測很大。
世界都進步到那裏去了。覺得特別,特別恐怖。真相是,規格,
如果不能解決(証明)問題的話,那等於沒學到數學。數學並不是文學。
Q22: 特別怪的型別,像是C語言沒有string基本型別,string
vector , 很多container 泛型的寫法int, integer大家定義的長度不見得一樣。
char,不定長度的varchar就是string嗎?

昨晚,因為要看華視的「真心請按兩次鈴」所以,沒有把web service裝起來。只好偷懶連原作者,放在大學網站空間的cgi。

今天家裏連不上lighttpd。真奇怪。apache又不太會用。
終於下載壓縮包了。tar -xvf l***.gz
開始**./configure**
按指示,就不裝那兩個包了,應該沒差吧!!
$ ./configure --without-pcre --without-bzip2
最後的字是說

Plugins:

enabled:
mod_access
mod_accesslog
mod_alias
mod_auth
mod_cgi
mod_compress
mod_dirlisting
mod_evhost
mod_expire
mod_extforward
mod_fastcgi
mod_flv_streaming
mod_indexfile
mod_proxy
mod_rrdtool
mod_scgi
mod_secdownload
mod_setenv
mod_simple_vhost
mod_staticfile
mod_status
mod_userdir
mod_usertrack
mod_webdav
disabled:
mod_cml
mod_magnet
mod_mysql_vhost
mod_redirect
mod_rewrite
mod_ssi
mod_trigger_b4_dl

Features:

enabled:
auth-crypt
compress-deflate
compress-gzip
large-files
network-ipv6
disabled:
auth-ldap
compress-bzip2
network-openssl
regex-conditionals
stat-cache-fam
storage-gdbm
storage-memcache
webdav-locks
webdav-properties

mode_cgi是不用裝嗎?

我的lighttpd
的設定檔,lighttpd.conf(檔名應該可以自訂)。

參考 網友分享
http://hi.baidu.com/id_joyride/blog/item/25933ef676a95f2b730eecd3.html

# --- define variables (begin) ---
var.DocRoot = "/home/timloo/lighty_root"
var.HostWebPage = "index.html"
var.HttpPort = 8080

--- define variables (end) ---

--- set enviroment (begin) ---

server.document-root = var.DocRoot
server.port = var.HttpPort
server.indexfiles = (var.HostWebPage)
mimetype.assign = (".html" => "text/html")

--- set enviroment (end) ---

--- add modules (begin) ---

server.modules = ("mod_cgi")

Add the cgi module

cgi.assign = (".cgi" => "")

".cgi" - appoint suffix of cgi program;

"" - tell lighttpd that the cgi program need not a particular explain program.

--- add modules (end) ---

然後,index.html, mult.cgi 照抄,照編譯。
mkdir cgi-bin

~$ gcc mult.c -o cgi-bin/mult.cgi

就不用move 過去了。

這樣環境就on 起來了。

而網站根目錄,不能用**~/lighty_root**這種寫法.會報錯。
port 80 又被佔用了。你可以用kill 那個行程。或是我改成8080 port。

lighttpd -f ~/lighty_root/lighttpd.conf

趕快回到昨天的範例。

~/gsoap-2.8/gsoap/samples/hello

把helloclient.cpp叫出來修改。將
唯一出現網址的地方,改成
"http://localhost:8080/cgi-bin/helloserver.cgi"
因為修改了,所以重新make。
helloserver.cpp沒改到。
直接把昨天make好但沒用到的執行檔,helloserver, COPY,並改名,又搬動,為了右手減少傷害,還是

$ cp helloserver ~/lighty_root/cgi-bin/helloserver.cgi

然後,得到和昨天一樣的結果。

把roll範例下的程式也如法泡製,把rollserver改名copy到根目錄也可以。

所以是個沒有互動的,單向由server端丟回結果給client。

在這個過程中,lighttpd 不用重開,直接就抓到新加入的cgi 。

今晚還蠻順利的。

算是對Q3.第三題,做了一個簡單的實作。

小結:
client 的時間有改,執行檔的時間也改了,應該叫用新的網址無誤。

cgi, 算是為了c語言還是有人用,在網頁上,用c控制一些低階的設備。



上一篇
emacs 做中學第十七天:gsoap2 的sample, 3個簡單的範例
下一篇
emacs 做中學第十九天:gsoap2,那些web service ,泛xml的應用
系列文
emacs的30天學習筆記38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言